package com.oyc.demo.listener;

import java.util.Map;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.exception.ExcelAnalysisException;
import com.oyc.demo.domain.Cablebasic;
import com.oyc.demo.exception.BaseBusinessException;
import com.oyc.demo.util.Constants;

public class CheckListener extends AnalysisEventListener<Cablebasic> {
	/**
	  * 每1000条处理一次，然后清理list ，方便内存回收
	  */
	private static final int BATCH_COUNT = 1000;
	
	 /**
	  * 如果使用了spring,请使用这个构造方法。每次创建Listener的时候需要把spring管理的类传进来
	  *
	  * @param demoDAO
	  */
	 public CheckListener() {
	    
	 }
	 
	@Override
	public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
		// TODO Auto-generated method stub
		super.invokeHeadMap(headMap, context);
	    //表头行
		if(context.getCurrentRowNum()==1){
			if(headMap.size()!=Constants.CellNum){
				throw new ExcelAnalysisException("导入失败,请选择正确的模板文件后再执行导入操作");
			}
		}
	}
	 
	 /**
	  * 所有数据解析完成了 都会来调用
	  *
	  * @param context
	  */
	@Override
	public void doAfterAllAnalysed(AnalysisContext context) {
		
	}
	
	/**
	  * 这个每一条数据解析都会来调用
	  *
	  * @param data
	  *            one row value. Is is same as {@link AnalysisContext#readRowHolder()}
	  * @param context
	  */
	@Override
	public void invoke(Cablebasic data, AnalysisContext context) {
		throw new ExcelAnalysisException("有重复数据");
	}
}
